home *** CD-ROM | disk | FTP | other *** search
- /********************************************************************************/
- /* */
- /* FileGlue.c - A/ROSE file system glue. */
- /* */
- /* Richard W. Mincher. December 20, 1989. */
- /* */
- /* Modified by Anumele D. Raja on June 17, 1991 */
- /* Changed all the names of file manager calls with A in the front */
- /* */
- /* Copyright © 1989-1991 Apple Computer, Inc. All rights reserved. */
- /* */
- /********************************************************************************/
-
- #include "Types.h"
- #ifdef APPLEIPC
- #include "CursorCtl.h"
- #include "Memory.h"
- #endif APPLEIPC
- #include "AROSE.h"
- #include "Managers.h"
-
- #include "FileTask.h"
-
- short
- AFSOpen( char *fileName, short vRefNum, short *refNum )
- {
- message *msg;
- long mid;
- short temp;
-
- msg = GetMsg();
- msg->mTo = GetFSTid();
- msg->mSData[0] = vRefNum;
- msg->mDataPtr = fileName;
- for(temp=0; fileName[temp]; temp++ ) // Find the length of the string fileName
- ;
- msg->mDataSize = temp;
- msg->mCode = FS_OPEN;
- mid = msg->mId;
- Send( msg );
- #ifdef APPLEIPC
- while(!(msg = Receive( mid, OS_MATCH_ALL, OS_MATCH_ALL, -1, nil)))
- SpinCursor( 1 );
- #else APPLEIPC
- msg = Receive( mid, OS_MATCH_ALL, OS_MATCH_ALL, 0 );
- #endif APPLEIPC
- temp = msg->mStatus;
- *refNum = msg->mSData[0];
- FreeMsg( msg );
- return temp;
- }
-
- short
- AOpenRF( char *fileName, short vRefNum, short *refNum )
- {
- message *msg;
- long mid;
- short temp;
-
- msg = GetMsg();
- msg->mTo = GetFSTid();
- msg->mSData[0] = vRefNum;
- msg->mDataPtr = fileName;
- for(temp=0; fileName[temp]; temp++ )
- ;
- msg->mDataSize = temp;
- msg->mCode = FS_OPENRF;
- mid = msg->mId;
- Send( msg );
- #ifdef APPLEIPC
- while(!(msg = Receive( mid, OS_MATCH_ALL, OS_MATCH_ALL, -1, nil)))
- SpinCursor( 1 );
- #else APPLEIPC
- msg = Receive( mid, OS_MATCH_ALL, OS_MATCH_ALL, 0 );
- #endif APPLEIPC
- temp = msg->mStatus;
- *refNum = msg->mOData[0];
- FreeMsg( msg );
- return temp;
- }
-
- short
- AFSRead( short refNum, long *count, char *buffPtr )
- {
- message *msg;
- long mid;
- short temp;
-
- msg = GetMsg();
- msg->mTo = GetFSTid();
- msg->mSData[0] = refNum;
- msg->mDataPtr = buffPtr;
- msg->mDataSize = *count;
- msg->mCode = FS_READ;
- mid = msg->mId;
- Send( msg );
- #ifdef APPLEIPC
- while(!(msg = Receive( mid, OS_MATCH_ALL, OS_MATCH_ALL, -1, nil)))
- SpinCursor( 1 );
- #else APPLEIPC
- msg = Receive( mid, OS_MATCH_ALL, OS_MATCH_ALL, 0 );
- #endif APPLEIPC
- *count = msg->mDataSize;
- temp = msg->mStatus;
- FreeMsg( msg );
- return temp;
- }
-
- short
- AFSWrite( short refNum, long *count, char *buffPtr )
- {
- message *msg;
- long mid;
- short temp;
-
- msg = GetMsg();
- msg->mTo = GetFSTid();
- msg->mSData[0] = refNum;
- msg->mDataPtr = buffPtr;
- msg->mDataSize = *count;
- msg->mCode = FS_WRITE;
- mid = msg->mId;
- Send( msg );
- #ifdef APPLEIPC
- while(!(msg = Receive( mid, OS_MATCH_ALL, OS_MATCH_ALL, -1, nil)))
- SpinCursor( 1 );
- #else APPLEIPC
- msg = Receive( mid, OS_MATCH_ALL, OS_MATCH_ALL, 0 );
- #endif APPLEIPC
- *count = msg->mDataSize;
- temp = msg->mStatus;
- FreeMsg( msg );
- return temp;
- }
-
- short
- AGetFPos( short refNum, long *filePos )
- {
- message *msg;
- long mid;
- short temp;
-
- msg = GetMsg();
- msg->mTo = GetFSTid();
- msg->mSData[0] = refNum;
- msg->mCode = FS_GETFPOS;
- mid = msg->mId;
- Send( msg );
- #ifdef APPLEIPC
- while(!(msg = Receive( mid, OS_MATCH_ALL, OS_MATCH_ALL, -1, nil)))
- SpinCursor( 1 );
- #else APPLEIPC
- msg = Receive( mid, OS_MATCH_ALL, OS_MATCH_ALL, 0 );
- #endif APPLEIPC
- *filePos = msg->mOData[0];
- temp = msg->mStatus;
- FreeMsg( msg );
- return temp;
- }
-
- short
- ASetFPos( short refNum, short posMode, long posOff )
- {
- message *msg;
- long mid;
- short temp;
-
- msg = GetMsg();
- msg->mTo = GetFSTid();
- msg->mSData[0] = refNum;
- msg->mCode = FS_SETFPOS;
- msg->mOData[0] = posMode;
- msg->mOData[1] = posOff;
- mid = msg->mId;
- Send( msg );
- #ifdef APPLEIPC
- while(!(msg = Receive( mid, OS_MATCH_ALL, OS_MATCH_ALL, -1, nil)))
- SpinCursor( 1 );
- #else APPLEIPC
- msg = Receive( mid, OS_MATCH_ALL, OS_MATCH_ALL, 0 );
- #endif APPLEIPC
- temp = msg->mStatus;
- FreeMsg( msg );
- return temp;
- }
-
- short
- AGetEOF( short refNum, long *logEOF )
- {
- message *msg;
- long mid;
- short temp;
-
- msg = GetMsg();
- msg->mTo = GetFSTid();
- msg->mSData[0] = refNum;
- msg->mCode = FS_GETEOF;
- mid = msg->mId;
- Send( msg );
- #ifdef APPLEIPC
- while(!(msg = Receive( mid, OS_MATCH_ALL, OS_MATCH_ALL, -1, nil)))
- SpinCursor( 1 );
- #else APPLEIPC
- msg = Receive( mid, OS_MATCH_ALL, OS_MATCH_ALL, 0 );
- #endif APPLEIPC
- *logEOF = msg->mOData[0];
- temp = msg->mStatus;
- FreeMsg( msg );
- return temp;
- }
-
- short
- ASetEOF( short refNum, long logEOF )
- {
- message *msg;
- long mid;
- short temp;
-
- msg = GetMsg();
- msg->mTo = GetFSTid();
- msg->mSData[0] = refNum;
- msg->mCode = FS_SETEOF;
- msg->mOData[0] = logEOF;
- mid = msg->mId;
- Send( msg );
- #ifdef APPLEIPC
- while(!(msg = Receive( mid, OS_MATCH_ALL, OS_MATCH_ALL, -1, nil)))
- SpinCursor( 1 );
- #else APPLEIPC
- msg = Receive( mid, OS_MATCH_ALL, OS_MATCH_ALL, 0 );
- #endif APPLEIPC
- temp = msg->mStatus;
- FreeMsg( msg );
- return temp;
- }
-
- short
- AAllocate( short refNum, long *count )
- {
- message *msg;
- long mid;
- short temp;
-
- msg = GetMsg();
- msg->mTo = GetFSTid();
- msg->mSData[0] = refNum;
- msg->mOData[0] = *count;
- msg->mCode = FS_ALLOCATE;
- mid = msg->mId;
- Send( msg );
- #ifdef APPLEIPC
- while(!(msg = Receive( mid, OS_MATCH_ALL, OS_MATCH_ALL, -1, nil)))
- SpinCursor( 1 );
- #else APPLEIPC
- msg = Receive( mid, OS_MATCH_ALL, OS_MATCH_ALL, 0 );
- #endif APPLEIPC
- *count = msg->mOData[0];
- temp = msg->mStatus;
- FreeMsg( msg );
- return temp;
- }
-
- short
- AFSClose( short refNum )
- {
- message *msg;
- long mid;
- short temp;
-
- msg = GetMsg();
- msg->mTo = GetFSTid();
- msg->mSData[0] = refNum;
- msg->mCode = FS_CLOSE;
- mid = msg->mId;
- Send( msg );
- #ifdef APPLEIPC
- while(!(msg = Receive( mid, OS_MATCH_ALL, OS_MATCH_ALL, -1, nil)))
- SpinCursor( 1 );
- #else APPLEIPC
- msg = Receive( mid, OS_MATCH_ALL, OS_MATCH_ALL, 0 );
- #endif APPLEIPC
- temp = msg->mStatus;
- FreeMsg( msg );
- return temp;
- }
-
- short
- ACreate( char *fileName, short vRefNum, long creator, long fileType )
- {
- message *msg;
- long mid;
- short temp;
-
- msg = GetMsg();
- msg->mTo = GetFSTid();
- msg->mSData[0] = vRefNum;
- msg->mSData[1] = fileType;
- msg->mSData[2] = creator;
- msg->mDataPtr = fileName;
- for(temp=0; fileName[temp]; temp++ )
- ;
- msg->mDataSize = temp;
- msg->mCode = FS_CREATE;
- mid = msg->mId;
- Send( msg );
- #ifdef APPLEIPC
- while(!(msg = Receive( mid, OS_MATCH_ALL, OS_MATCH_ALL, -1, nil)))
- SpinCursor( 1 );
- #else APPLEIPC
- msg = Receive( mid, OS_MATCH_ALL, OS_MATCH_ALL, 0 );
- #endif APPLEIPC
- temp = msg->mStatus;
- FreeMsg( msg );
- return temp;
- }
-
- short
- AFSDelete( char *fileName, short vRefNum )
- {
- message *msg;
- long mid;
- short temp;
-
- msg = GetMsg();
- msg->mTo = GetFSTid();
- msg->mSData[0] = vRefNum;
- msg->mDataPtr = fileName;
- for(temp=0; fileName[temp]; temp++ )
- ;
- msg->mDataSize = temp;
- msg->mCode = FS_DELETE;
- mid = msg->mId;
- Send( msg );
- #ifdef APPLEIPC
- while(!(msg = Receive( mid, OS_MATCH_ALL, OS_MATCH_ALL, -1, nil)))
- SpinCursor( 1 );
- #else APPLEIPC
- msg = Receive( mid, OS_MATCH_ALL, OS_MATCH_ALL, 0 );
- #endif APPLEIPC
- temp = msg->mStatus;
- FreeMsg( msg );
- return temp;
- }
-
- short
- AGetFInfo( char *fileName, short vRefNum, FInfo *fndrInfo )
- {
-
- char string[64];
- short temp;
- message *msg;
- long mid;
-
- for(temp=0; fileName[temp]; temp++ )
- ;
- BlockMove( fileName, string, temp );
- msg = GetMsg();
- msg->mTo = GetFSTid();
- msg->mSData[0] = vRefNum;
- msg->mDataPtr = string;
- msg->mDataSize = temp;
- msg->mCode = FS_GETFINFO;
- mid = msg->mId;
- Send( msg );
- #ifdef APPLEIPC
- while(!(msg = Receive( mid, OS_MATCH_ALL, OS_MATCH_ALL, -1, nil)))
- SpinCursor( 1 );
- #else APPLEIPC
- msg = Receive( mid, OS_MATCH_ALL, OS_MATCH_ALL, 0 );
- #endif APPLEIPC
- temp = msg->mStatus;
- BlockMove( string, (char *)fndrInfo, sizeof(FInfo) );
- FreeMsg( msg );
- return temp;
- }
-
- short
- ASetFInfo( char *fileName, short vRefNum, FInfo *fndrInfo )
- {
- char string[sizeof(FInfo)+64];
- short temp;
- message *msg;
- long mid;
-
- BlockMove( (char *)fndrInfo, string, sizeof(FInfo) );
- for(temp=0; fileName[temp]; temp++ )
- ;
- BlockMove( fileName, string + sizeof(FInfo), temp);
- msg = GetMsg();
- msg->mTo = GetFSTid();
- msg->mSData[0] = vRefNum;
- msg->mDataPtr = string;
- msg->mDataSize = temp + sizeof(FInfo);
- msg->mCode = FS_SETFINFO;
- mid = msg->mId;
- Send( msg );
- #ifdef APPLEIPC
- while(!(msg = Receive( mid, OS_MATCH_ALL, OS_MATCH_ALL, -1, nil)))
- SpinCursor( 1 );
- #else APPLEIPC
- msg = Receive( mid, OS_MATCH_ALL, OS_MATCH_ALL, 0 );
- #endif APPLEIPC
- temp = msg->mStatus;
- FreeMsg( msg );
- return temp;
- }
-
- short
- ASetFLock( char *fileName, short vRefNum )
- {
- message *msg;
- long mid;
- short temp;
-
- msg = GetMsg();
- msg->mTo = GetFSTid();
- msg->mSData[0] = vRefNum;
- msg->mDataPtr = fileName;
- for(temp=0; fileName[temp]; temp++ )
- ;
- msg->mDataSize = temp;
- msg->mCode = FS_SETFLOCK;
- mid = msg->mId;
- Send( msg );
- #ifdef APPLEIPC
- while(!(msg = Receive( mid, OS_MATCH_ALL, OS_MATCH_ALL, -1, nil)))
- SpinCursor( 1 );
- #else APPLEIPC
- msg = Receive( mid, OS_MATCH_ALL, OS_MATCH_ALL, 0 );
- #endif APPLEIPC
- temp = msg->mStatus;
- FreeMsg( msg );
- return temp;
- }
-
- short
- ARstFLock( char *fileName, short vRefNum )
- {
- message *msg;
- long mid;
- short temp;
-
- msg = GetMsg();
- msg->mTo = GetFSTid();
- msg->mSData[0] = vRefNum;
- msg->mDataPtr = fileName;
- for(temp=0; fileName[temp]; temp++ )
- ;
- msg->mDataSize = temp;
- msg->mCode = FS_RSTFLOCK;
- mid = msg->mId;
- Send( msg );
- #ifdef APPLEIPC
- while(!(msg = Receive( mid, OS_MATCH_ALL, OS_MATCH_ALL, -1, nil)))
- SpinCursor( 1 );
- #else APPLEIPC
- msg = Receive( mid, OS_MATCH_ALL, OS_MATCH_ALL, 0 );
- #endif APPLEIPC
- temp = msg->mStatus;
- FreeMsg( msg );
- return temp;
- }
-
- short
- ARename( char *oldName, short vRefNum, char *newName )
- {
- message *msg;
- long mid;
- short temp, temp2;
- char string[130];
-
- msg = GetMsg();
- msg->mTo = GetFSTid();
- msg->mSData[0] = vRefNum;
- for(temp=0; oldName[temp]; temp++ )
- ;
- for(temp2=0; oldName[temp2]; temp2++ )
- ;
- BlockMove( oldName, string, temp );
- BlockMove( newName, string + temp, temp2 );
- msg->mSData[1] = temp;
- msg->mSData[2] = temp2;
- msg->mDataPtr = string;
- msg->mDataSize = temp + temp2;
- msg->mCode = FS_RENAME;
- mid = msg->mId;
- Send( msg );
- #ifdef APPLEIPC
- while(!(msg = Receive( mid, OS_MATCH_ALL, OS_MATCH_ALL, -1, nil)))
- SpinCursor( 1 );
- #else APPLEIPC
- msg = Receive( mid, OS_MATCH_ALL, OS_MATCH_ALL, 0 );
- #endif APPLEIPC
- temp = msg->mStatus;
- FreeMsg( msg );
- return temp;
- }
-
- static tid_type FSTID = 0;
-
- static tid_type GetFSTid ()
- {
- struct ra_GetCards get_cards;
- message *msgptr;
- unsigned short index;
- short s;
-
- if (FSTID)
- return FSTID;
-
- if (GetICCTID () != 0)
- {
- if ((msgptr = GetMsg ()) == NULL)
- return (FSTID);
-
- msgptr -> mCode = ICC_GETCARDS;
- msgptr -> mDataPtr = (char *) &get_cards;
- msgptr -> mDataSize = sizeof (struct ra_GetCards);
- msgptr -> mTo = GetICCTID ();
- Send (msgptr);
-
- #ifdef APPLEIPC
- while(!(msgptr = Receive( OS_MATCH_ALL, OS_MATCH_ALL, ICC_GETCARDS+1, -1, nil)))
- SpinCursor( 1 );
- #else APPLEIPC
- msgptr = Receive (OS_MATCH_ALL, OS_MATCH_ALL, ICC_GETCARDS+1, OS_NO_TIMEOUT);
- #endif APPLEIPC
-
- if (msgptr -> mStatus == 0)
- {
- for (s = 0; (s < IC_MAXCARDS) && (FSTID == 0); s++)
- {
- if (get_cards.tid [s] > 0)
- {
- index = 0;
- FSTID = Lookup_Task (kFileSystemObjectName, kFileSystemTypeName,
- get_cards.tid [s], &index);
- }
- }
- }
- FreeMsg (msgptr);
- }
- else
- {
- index = 0;
- FSTID = Lookup_Task (kFileSystemObjectName, kFileSystemTypeName, GetNameTID (), &index);
- }
-
- return (FSTID);
- }
-